1. 理解 Transformer Attention
从零理解 Transformer Attention:为什么 Q、K、V 能让大模型“关注”重要信息?
Transformer 是 GPT、Llama、Qwen、DeepSeek 等所有现代大模型的基础。
而 Transformer 的核心只有一个:
Attention(注意力机制)
很多教程一上来就给出公式:
然后开始讲各种矩阵运算。
对于初学者来说,最大的问题往往不是公式推导,而是:
- Q、K、V 到底是什么?
- 为什么需要三个矩阵?
- 为什么是
? - 为什么除以
? - 为什么最后还要乘
? - Attention 本质上到底在干什么?
本文将从最底层的直觉开始,一步一步拆解 Transformer Attention。
1. Attention 解决了什么问题?
假设有一句话:
The animal didn't cross the street because it was too tired.
这里:
it
到底指什么?
是:
animal
还是:
street
人类会自然地查看上下文:
too tired
然后判断:
it = animal
Transformer 的核心思想就是:
当前词应该从哪些词获取信息?
这就是 Attention。
2. RNN 为什么不够好?
Transformer 出现之前,主流模型是:
- RNN
- LSTM
- GRU
处理方式类似:
我
↓
爱
↓
学习
↓
AI
必须按顺序计算:
token1 → token2 → token3 → token4
存在两个问题:
无法并行
必须一步一步处理。
长距离依赖困难
例如:
小明昨天买的那本非常有趣的机器学习书...
最后一个词可能需要依赖几十个词之前的信息。
信息在传播过程中会不断衰减。
3. Transformer 的核心思想
Transformer 的做法很直接:
每个词都可以查看整个句子。
例如:
我 爱 AI
处理:
爱
时:
爱 ← 我
爱 ← 爱
爱 ← AI
全部一起看。
这就是:
Self-Attention
4. 一个会议室的例子
假设四个人开会:
A B C D
轮到 C 发言。
C 会想:
谁的话对我最重要?
经过判断:
A 10%
B 60%
C 20%
D 10%
于是:
这其实就是 Attention。
本质只有一句话:
对所有信息进行加权求和。
5. 从输入到 Q、K、V
假设输入:
我 爱 AI
经过 Tokenizer:
[101,205,666]
经过 Embedding:
其中:
- 每一行对应一个 Token
- 每一列对应一个隐藏维度
例如:
6. Q、K、V 是怎么来的?
Transformer 内部有三个线性层:
q_proj = nn.Linear(4096,4096)
k_proj = nn.Linear(4096,4096)
v_proj = nn.Linear(4096,4096)
对应:
计算:
7. WQ、WK、WV 到底是什么?
很多人第一次学都会问:
WQ、WK、WV 是谁设计的?
答案:
它们就是普通神经网络权重。
和 MLP 里的权重没有区别。
例如:
nn.Linear(4096,4096)
里面就有一个矩阵:
随机初始化后,通过梯度下降不断更新。
Attention 里的:
也是一样。
8. 为什么要三个矩阵?
这是 Transformer 作者的设计选择。
因为一个 Token 有三种不同角色。
Query
表示:
我想找什么
Key
表示:
我有什么特征
Value
表示:
我真正携带的信息
可以理解成搜索引擎:
用户输入:
机器学习
对应:
Query
网页标题:
机器学习教程
对应:
Key
网页正文:
这里介绍神经网络...
对应:
Value
匹配:
Query ↔ Key
决定看谁。
然后:
Value
决定拿什么内容。
9. 为什么不用一个矩阵?
例如:
完全合法。
实际上很多论文都尝试过。
但是效果通常下降。
原因是:
Attention 干了两件事:
第一件事
计算相关性:
即:
找谁重要
第二件事
信息传递:
即:
拿什么信息
这是两种不同任务。
所以拆成不同参数学习效果更好。
10. 为什么是 QKᵀ?
Attention 最关键的一步:
很多人会问:
为什么非要乘转置?
假设:
希望计算:
对于所有:
矩阵乘法:
刚好得到:
这正是:
每个 Query 与每个 Key 的相似度矩阵。
11. 点积为什么能表示相似度?
因为:
如果单位化:
例如:
完全相同。
完全无关。
所以:
可以作为:
相关性评分
12. 为什么除以 √d?
Attention 使用:
原因是:
随着维度增加:
会越来越大。
例如:
64维 → 数十
4096维 → 数千
如果直接进入 Softmax:
[3000,2800,2500]
会变成:
[1,0,0]
梯度几乎消失。
因此使用:
进行缩放。
保持数值稳定。
13. Softmax 在干什么?
假设:
Softmax 后:
得到:
并且:
变成:
注意力权重
例如:
法国 80%
首都 15%
巴黎 5%
14. 为什么最后要乘 V?
这是 Attention 的精髓。
很多人误以为:
QKᵀ
已经完成任务了。
其实没有。
QKᵀ 只是决定:
该看谁
真正的信息在:
里面。
例如:
我 爱 AI
对应:
V1 = 我的信息
V2 = 爱的信息
V3 = AI的信息
Attention 算出:
[0.1,0.2,0.7]
说明:
主要关注 AI
于是:
得到新的表示。
因此:
Q、K 决定信息流向,V 决定真正传递的信息。
15. 从信息路由角度理解 Attention
Attention 实际上分成两部分。
路由阶段
决定:
谁看谁
信息传递阶段
决定:
传什么
因此:
QKᵀ = 路由器
V = 数据包
AV = 信息传输
16. 从图论角度理解
Attention 还可以看成一张动态图。
假设:
我 爱 AI
对应三个节点:
节点1
节点2
节点3
Attention 生成:
其中:
表示:
节点i
→
节点j
的连接强度。
因此很多论文会说:
Attention 本质上是在动态构建一张 Token 关系图。
17. Attention 的完整流程

18. Attention 的本质
如果只记住一句话:
Attention 的本质是:让每个 Token 根据当前上下文,动态决定应该从哪些 Token 获取信息,并按照相关性对这些信息进行加权融合。
数学表达:
工程视角:
Q:我要找什么
K:我能提供什么
V:我真正携带的信息
信息流动过程:
QKᵀ
→ 计算相关性
Softmax
→ 变成注意力权重
AV
→ 聚合信息
这就是 Transformer Attention 的全部核心思想,也是现代大语言模型最重要的基础组件。